﻿#region Using Statements
using System;
#endregion

namespace ZZTest.Input
{
    /// <summary>
    /// Defines a method that is used when mapping an input key to an action.
    /// See documentation for further information.
    /// </summary>
    /// <remarks>This method is called whenever the user wants to re-assign an input command to a new input key.
    /// The method is invoked and shall block until a key was pressed. Then the method shall return the Id of the pressed key.</remarks>
    public interface IKeyTranslator
    {
        /// <summary>
        /// Blocks the calling thread (a separate one) and returns with the id of the key that was pressed.
        /// </summary>
        /// <returns>The id of the key that was pressed. This id must be "understood" from the corresponding <see cref="IInputManager"/>!</returns>
        int GetCurrentKey();
    }
}
